

let interceptors = {//拦截器
  request(req){///请求拦截器
    return new Promise(next => {
      req.url = /^http/.test(req.url) ? req.url : (baseURL + req.url)
      req.header = req.header || {}
      ////设置token
      if(wx.token) req.header.token = wx.token
      next(req)
    })
  },
  response(res){//响应拦截器
    return new Promise(next =>{
      let data = res.data
      if(res.statusCode == 404){
        data = {errorMsg:'请求接口不存在'}
      }else if(res.statusCode == 500){
        data = {errorMsg:res.data || '服务器错误，请联系管理员'}
      }else if(res.statusCode == 200){
        // next(res.data)
      }else{
        data = ({errorMsg: res.errMsg || '未知错误'})
      }
      if(data.errorMsg) {
        wx.showToast({
          title: data.errorMsg,
          icon: 'none',
          duration: 2000
        })
      }
      next(data)
    })

  }
}

//模块引入代码
const baseURL = 'https://obuge.com/juzao'///定义全局变量
function GET(url,query,args){
  args = args || {}
  return new Promise((resolve,reject) =>{
    interceptors.request({url,...args}).then(req=>{
      wx.request({
        ...req,
        // url: baseURL + url,
        data: query,
        method: "GET",
        success:(res)=>{
          interceptors.response(res).then(data =>{
            resolve(data)
          })
          resolve(res.data ? res.data : {errorMsg: res.errMsg || '请求错误'})
        },
      })
    })
    
  })
 
}
////data在body里面
function PUT(url,data,args){
  args = args || {}
  return new Promise((resolve,reject) =>{
    interceptors.request({url,...args}).then(req=>{
      wx.request({
        ...req,
        // url: baseURL + url,
        data,
        method: "PUT",
        success:(res)=>{
          interceptors.response(res).then(data =>{
            resolve(data)
          })
          resolve(res.data ? res.data : {errorMsg: res.errMsg || '请求错误'})
        },
      })
    })
  })
}
function POST(url,data,args){
  args = args || {}
  return new Promise((resolve,reject) =>{
    interceptors.request({url,...args}).then(req=>{
      wx.request({
        ...req,
        // url: baseURL + url,
        data,
        method: "POST",
        success:(res)=>{
          interceptors.response(res).then(data =>{
            resolve(data)
          })
          resolve(res.data ? res.data : {errorMsg: res.errMsg || '请求错误'})
        },
      })
    })
    
  })
 
}
function DELETE(url,data,args){
  args = args || {}
  return new Promise((resolve,reject) =>{
    interceptors.request({url,...args}).then(req=>{
      wx.request({
        ...req,
        // url: baseURL + url,
        data,
        method: "DELETE",
        success:(res)=>{
          interceptors.response(res).then(data =>{
            resolve(data)
          })
          resolve(res.data ? res.data : {errorMsg: res.errMsg || '请求错误'})
        },
      })
    })
    
  })
 
}
module.exports = {
  baseURL,
  get: GET,
  put: PUT,
  post: POST,
  delete: DELETE
}
